/*用移位代替乘法*/
#include<bits/stdc++.h>
typedef long long LL;
typedef double dl;
#define opt operator
#define pb push_back
#define pii std::pair<LL,LL>
const LL maxn=1e6+9,mod=998244353,inf=0x3f3f3f3f;
LL Read(){
	LL x(0),f(1); char c=getchar();
	while(c<'0' || c>'9'){
		if(c=='-') f=-1; c=getchar();
	}
	while(c>='0' && c<='9'){
		x=(x<<3ll)+(x<<1ll)+c-'0'; c=getchar();
	}return x*f;
}
void Chkmin(LL &x,LL y){
	if(y<x) x=y;
}
void Chkmax(LL &x,LL y){
	if(y>x) x=y;
}
LL add(LL x,LL y){
	return x+=y,x>=mod?x-mod:x;
}
LL dec(LL x,LL y){
	return x-=y,x<0?x+mod:x;
}
LL mul(LL x,LL y){
	return 1ll*x*y%mod;
}
LL Pow(LL base,LL b){
	LL ret(1); while(b){
		if(b&1) ret=mul(ret,base); base=mul(base,base); b>>=1;
	}return ret;
}
LL a,b,c;
int main(){
	a=Read(); b=Read(); c=Read();
	LL ans(0);
	for(LL len=1;len<=a+b+c;++len){
		LL ret(0);
		for(LL i=0;i<len;++i){
			LL x(std::__gcd(len,i)),y(len/x);
			//xge djl len:y
			LL a0(a/y),b0(b/y),c0(c/y);
			if(a0+b0+c0>=x){
				for(LL _a=0;_a<=a0;++_a){
					for(LL _b=0;_b<=b0;++_b){
						for(LL _c=0;_c<=c0;++_c) if(_a+_b+_c==x){
							LL num(1);
							for(LL j=1;j<=x;++j) num*=j;
							for(LL j=1;j<=_a;++j) num/=j;
							for(LL j=1;j<=_b;++j) num/=j;
							for(LL j=1;j<=_c;++j) num/=j;
							ret+=num;
						}
					}
				}
			}
		}
		ret/=len;
		ans+=ret;
	}
	printf("%lld\n",ans);
	return 0;
}



